#ifndef IFactory_H
#define IFactory_H

class IProductA;
class IProductB;

class IFactory{
public:
	virtual ~IFactory() = 0;
	virtual IProductA* CreateProductA() = 0;
	virtual IProductB* CreateProductB() = 0;
protected:
	IFactory();
private:
};

class ConcreteFactoryA: public IFactory{
public:
	ConcreteFactoryA();
	~ConcreteFactoryA();
	IProductA* CreateProductA();
	IProductB* CreateProductB();
protected:

private:
};

class ConcreteFactoryB: public IFactory{
public:
	ConcreteFactoryB();
	~ConcreteFactoryB();

	IProductA* CreateProductA();
	IProductB* CreateProductB();
protected:

private:
};

#endif
